#include <elasticlient/client.h>
#include <cpr/cpr.h>
#include <iostream>

// int main()
// {
//     //1. 构造ES客户端
//     elasticlient::Client client({"http://127.0.0.1:9200/"});
//     //2. 发起搜索请求
//     try {
//         auto rsp = client.search("user", "_doc", "{\"query\": { \"match_all\":{} }}");
//         std::cout << rsp.status_code << std::endl;
//         std::cout << rsp.text << std::endl;
//     } catch(std::exception &e) {
//         std::cout << "请求失败：" << e.what() << std::endl;
//         return -1;
//     }
//     //3. 打印响应状态码和响应正文
//     return 0;
// }

#include "../../common/icsearch.hpp"

int main()
{
    InitLog(false);

    std::vector<std::string> host_list = {"http://127.0.0.1:9200/"};
    auto client = std::make_shared<elasticlient::Client>(host_list);

    // bool ret = xu::ESIndex(client, "test_user").Append("nickname").Append("phone", "keyword", "standard", true).Create("0001");
    // if (ret == false)
    // {
    //     LOG_INFO("索引创建失败!");
    //     return -1;
    // }
    // else
    // {
    //     LOG_INFO("索引创建成功!");
    // }

    // ret = xu::ESInsert(client, "test_user").Append("nickname", "张三").Append("phone", "15566667777").Insert("00001");
    // if (ret == false) {
    //     LOG_ERROR("数据插入失败!");
    //     return -1;
    // }else {
    //     LOG_INFO("数据新增成功!");
    // }

    // //数据的修改
    // ret = xu::ESInsert(client, "test_user")
    //     .Append("nickname", "张三")
    //     .Append("phone", "13344445555")
    //     .Insert("00001");
    // if (ret == false) {
    //     LOG_ERROR("数据更新失败!");
    //     return -1;
    // }else {
    //     LOG_INFO("数据更新成功!");
    // }

    // Json::Value user = xu::ESSearch(client, "test_user")
    //     .AppendShould("phone.keyword", "13344445555")
    //     //.AppendMustNot("nickname.keyword", {"张三"})
    //     .Search();
    // if (user.empty() || user.isArray() == false) {
    //     LOG_ERROR("结果为空，或者结果不是数组类型");
    //     return -1;
    // } else {
    //     LOG_INFO("数据检索成功!");
    // }
    // int sz = user.size();
    // LOG_DEBUG("检索结果条目数量：{}", sz);
    // for (int i = 0; i < sz; i++) {
    //     LOG_INFO("nickname: {}", user[i]["_source"]["nickname"].asString());
    // }


    bool ret = xu::ESRemove(client, "user").Remove("0001");
    if (ret == false) {
        LOG_ERROR("删除数据失败");
        return -1;
    }  else {
        LOG_INFO("数据删除成功!");
    }


    return 0;
}
